package models

type MySQLRequest struct {
	Memory           int64    `json:"memory"`           //实例内存大小，单位：MB
	Volume           int64    `json:"volume"`           //实例硬盘大小，单位：GB
	Period           int64    `json:"period"`           //实例时长，单位：月
	GoodsNum         int64    `json:"goodsNum"`         // 实例数量，默认值为1, 最小值1，最大值为100
	Zone             string   `json:"zone"`             //可用区信息 , ap-shanghai-1
	VpcId            string   `json:"vpcId"`            // vpc私有网络id
	SubnetId         string   `json:"subnetId"`         // 子网id
	Port             int64    `json:"port"`             // 端口号
	InstanceRole     string   `json:"instanceRole"`     // 实例类型，默认为 master，支持值包括：master - 表示主实例，dr - 表示灾备实例，ro - 表示只读实例。
	MasterInstanceId string   `json:"masterInstanceId"` //实例 ID，购买只读实例时必填，该字段表示只读实例的主实例ID
	EngineVersion    string   `json:"engineVersion"`    // MySQL 版本，值包括：5.5、5.6 、5.7和8.0
	Password         string   `json:"password"`         // 设置 root 账号密码，密码规则：8 - 64 个字符，至少包含字母、数字、字符（支持的字符：_+-&=!@#$%^*()）中的两种，购买主实例时可指定该参数，购买只读实例或者灾备实例时指定该参数无意义。
	ProtectMode      int64    `json:"protectMode"`      // 数据复制方式，默认为 0，支持值包括：0 - 表示异步复制，1 - 表示半同步复制，2 - 表示强同步复制。
	DeployMode       int64    `json:"deployMode"`       // 多可用区域，默认为 0，支持值包括：0 - 表示单可用区，1 - 表示多可用区。
	SlaveZone        string   `json:"slaveZone"`        //备库 1 的可用区信息，默认为 Zone 的值。
	AutoRenewFlag    int64    `json:"autoRenewFlag"`    // 自动续费标记，可选值为：0 - 不自动续费；1 - 自动续费。
	MasterRegion     string   `json:"masterRegion"`     // 主实例地域信息，购买灾备、RO实例时，该字段必填。 ap-shanghai-2
	InstanceName     string   `json:"instanceName"`     //  实例名称。一次购买多个实例命名会用后缀数字区分，例instnaceName=db，goodsNum=3，实例命名分别为db1，db2，db3。
	SecurityGroup    []string `json:"securityGroup"`    // 安全组
	DeviceType       string   `json:"deviceType"`       // 实例隔离类型。支持值包括： "UNIVERSAL" - 通用型实例， "EXCLUSIVE" - 独享型实例， "BASIC" - 基础版实例。 不指定则默认为通用型实例。
	InstanceNodes    int64    `json:"instanceNodes"`    // 实例节点数。对于 RO 和 基础版实例， 该值默认为1。 如果需要购买三节点实例， 请将该值设置为3 或指定 BackupZone 参数。当购买主实例，且未指定该参数和 BackupZone 参数时，该值默认是 2， 即购买两节点实例。
	Cpu              int64    `json:"cpu"`              //实例cpu核数， 如果不传将根据memory指定的内存值自动填充对应的cpu值。
	EngineType       string   `json:"engineType"`       // 实例引擎类型，默认为"InnoDB"，支持值包括："InnoDB"，"RocksDB"。
}

type MySQLResponse struct {
	WanStatus     int64  `json:"WanStatus,omitnil" name:"WanStatus"`         // 外网状态，可能的返回值为：0-未开通外网；1-已开通外网；2-已关闭外网
	Zone          string `json:"Zone,omitnil" name:"Zone"`                   // 可用区信息
	InitFlag      int64  `json:"InitFlag,omitnil" name:"InitFlag"`           // 初始化标志，可能的返回值为：0-未初始化；1-已初始化
	Memory        int64  `json:"Memory,omitnil" name:"Memory"`               // 内存容量，单位为 MB
	Status        int64  `json:"Status,omitnil" name:"Status"`               // 实例状态，可能的返回值：0-创建中；1-运行中；4-正在进行隔离操作；5-已隔离
	VpcId         int64  `json:"VpcId,omitnil" name:"VpcId"`                 // 私有网络 ID，例如：51102
	InstanceId    string `json:"InstanceId,omitnil" name:"InstanceId"`       // 实例 ID
	Volume        int64  `json:"Volume,omitnil" name:"Volume"`               // 硬盘容量，单位为 GB
	AutoRenew     int64  `json:"AutoRenew,omitnil" name:"AutoRenew"`         // 自动续费标志，可能的返回值：0-未开通自动续费；1-已开通自动续费；2-已关闭自动续费
	ProtectMode   int64  `json:"ProtectMode,omitnil" name:"ProtectMode"`     // 数据复制方式。0 - 异步复制；1 - 半同步复制；2 - 强同步复制
	SubnetId      int64  `json:"SubnetId,omitnil" name:"SubnetId"`           // 子网 ID，例如：2333
	InstanceType  int64  `json:"InstanceType,omitnil" name:"InstanceType"`   // 实例类型，可能的返回值：1-主实例；2-灾备实例；3-只读实例
	Region        string `json:"Region,omitnil" name:"Region"`               // 地域信息
	DeadlineTime  string `json:"DeadlineTime,omitnil" name:"DeadlineTime"`   // 实例到期时间
	DeployMode    int64  `json:"DeployMode,omitnil" name:"DeployMode"`       // 可用区部署方式。可能的值为：0 - 单可用区；1 - 多可用区
	TaskStatus    int64  `json:"TaskStatus,omitnil" name:"TaskStatus"`       // 实例任务状态。0 - 没有任务 ,1 - 升级中,2 - 数据导入中,3 - 开放Slave中,4 - 外网访问开通中,5 - 批量操作执行中,6 - 回档中,7 - 外网访问关闭中,8 - 密码修改中,9 - 实例名修改中,10 - 重启中,12 - 自建迁移中,13 - 删除库表中,14 - 灾备实例创建同步中,15 - 升级待切换,16 - 升级切换中,17 - 升级切换完成
	DeviceType    string `json:"DeviceType,omitnil" name:"DeviceType"`       // 实例类型
	EngineVersion string `json:"EngineVersion,omitnil" name:"EngineVersion"` // 内核版本
	InstanceName  string `json:"InstanceName,omitnil" name:"InstanceName"`   // 实例名称
	WanDomain     string `json:"WanDomain,omitnil" name:"WanDomain"`         // 外网域名
	WanPort       int64  `json:"WanPort,omitnil" name:"WanPort"`             // 外网端口号
	PayType       int64  `json:"PayType,omitnil" name:"PayType"`             // 付费类型，可能的返回值：0-包年包月；1-按量计费
	CreateTime    string `json:"CreateTime,omitnil" name:"CreateTime"`       // 实例创建时间
	Vip           string `json:"Vip,omitnil" name:"Vip"`                     // 实例 IP
	Vport         int64  `json:"Vport,omitnil" name:"Vport"`                 // 端口号
	CdbError      int64  `json:"CdbError,omitnil" name:"CdbError"`           // 磁盘写入是否被锁定（实例数据写入量已经超过磁盘配额）。0 -未被锁定 1 -已被锁定
	UniqVpcId     string `json:"UniqVpcId,omitnil" name:"UniqVpcId"`         // 私有网络描述符，例如：“vpc-5v8wn9mg”
	UniqSubnetId  string `json:"UniqSubnetId,omitnil" name:"UniqSubnetId"`   // 子网描述符，例如：“subnet-1typ0s7d”
	Cpu           int64  `json:"Cpu,omitnil" name:"Cpu"`                     // 核心数
	Qps           int64  `json:"Qps,omitnil" name:"Qps"`                     // 每秒查询数量
	ZoneName      string `json:"ZoneName,omitnil" name:"ZoneName"`           // 可用区中文名称
	InstanceNodes int64  `json:"InstanceNodes,omitnil" name:"InstanceNodes"` // 节点数
	DiskType      string `json:"DiskType,omitnil" name:"DiskType"`           // 实例磁盘类型，仅云盘版实例才返回该值。可能的值为 CLOUD_SSD：SSD云硬盘， CLOUD_HSSD：增强型SSD云硬盘
}

type CDBPriceResponse struct {
	InstancePrice  ItemPrice `json:"InstancePrice,omitnil" name:"InstancePrice"`   // 描述了实例价格。
	BandwidthPrice ItemPrice `json:"BandwidthPrice,omitnil" name:"BandwidthPrice"` // 描述了网络价格。
}

type DBUserRequest struct {
	User               string `json:"user"`
	Host               string `json:"host"`
	Password           string `json:"password"`           // 密码
	MaxUserConnections int64  `json:"maxUserConnections"` // 最大连接数
	Description        string `json:"description"`        // 描述，说明
}

type DBAccountInfo struct {
	Notes              string `json:"Notes,omitnil" name:"Notes"`                           // 账号备注信息
	Host               string `json:"Host,omitnil" name:"Host"`                             // 账号的域名
	User               string `json:"User,omitnil" name:"User"`                             // 账号的名称
	ModifyTime         string `json:"ModifyTime,omitnil" name:"ModifyTime"`                 // 账号信息修改时间
	ModifyPasswordTime string `json:"ModifyPasswordTime,omitnil" name:"ModifyPasswordTime"` // 修改密码的时间
	MaxUserConnections int64  `json:"MaxUserConnections,omitnil" name:"MaxUserConnections"` // 用户最大可用实例连接数
}

type RedisResponse struct {
	InstanceName string  `json:"InstanceName,omitnil" name:"InstanceName"` // 实例名称。
	InstanceId   string  `json:"InstanceId,omitnil" name:"InstanceId"`     // 实例 ID。
	Appid        int64   `json:"Appid,omitnil" name:"Appid"`               // 用户APPID。APPID是与账号ID有唯一对应关系的应用 ID，部分腾讯云产品会使用此 APPID。
	RegionId     int64   `json:"RegionId,omitnil" name:"RegionId"`         // 地域 ID。<ul><li>1：广州。</li><li>4：上海。</li><li>5：中国香港。</li><li>6：多伦多。</li> <li>7：上海金融。</li> <li>8：北京。</li> <li>9：新加坡。</li> <li>11：深圳金融。</li> <li>15：美西（硅谷）。</li><li>16：成都。</li><li>17：法兰克福。</li><li>18：首尔。</li><li>19：重庆。</li><li>21：孟买。</li><li>22：美东（弗吉尼亚）。</li><li>23：曼谷。</li><li>25：东京。</li></ul>
	ZoneId       int64   `json:"ZoneId,omitnil" name:"ZoneId"`             // 区域 ID。
	Status       int64   `json:"Status,omitnil" name:"Status"`             // 实例当前状态。<ul><li>0：待初始化。</li><li>1：实例在流程中。</li><li>2：实例运行中。</li><li>-2：实例已隔离。</li><li>-3：实例待删除。</li></ul>
	PrivateIP    string  `json:"PrivateIP"`                                // 实例私有IP。
	Port         int64   `json:"Port,omitnil" name:"Port"`                 // 实例端口号。
	Createtime   string  `json:"Createtime,omitnil" name:"Createtime"`     // 实例创建时间。格式如：2020-01-15 10:20:00。
	Size         float64 `json:"Size,omitnil" name:"Size"`                 // 实例内存容量大小。单位：MB，1MB=1024KB。
	// 实例类型。
	// - 2：Redis 2.8内存版（标准架构）。
	// - 3：CKV 3.2内存版（标准架构）。
	// - 4：CKV 3.2内存版（集群架构）。
	// - 5：Redis 2.8内存版（单机）。
	// - 6：Redis 4.0内存版（标准架构）。
	// - 7：Redis 4.0内存版（集群架构）。
	// - 8：Redis 5.0内存版（标准架构）。
	// - 9：Redis 5.0内存版（集群架构）。
	// - 15：Redis 6.2内存版（标准架构）。
	// - 16：Redis 6.2内存版（集群架构）。
	Type             int64    `json:"Type,omitnil" name:"Type"`
	AutoRenewFlag    int64    `json:"AutoRenewFlag,omitnil" name:"AutoRenewFlag"`       // 实例是否设置自动续费标识。<ul><li>1：设置自动续费。</li><li>0：未设置自动续费。</li></ul>
	DeadlineTime     string   `json:"DeadlineTime,omitnil" name:"DeadlineTime"`         // 包年包月计费实例到期的时间。
	Engine           string   `json:"Engine,omitnil" name:"Engine"`                     // 引擎：社区版Redis、腾讯云CKV。
	ProductType      string   `json:"ProductType,omitnil" name:"ProductType"`           // 产品类型。<ul><li>standalone：标准版。</li><li>cluster ：集群版。</li></ul>
	UniqVpcId        string   `json:"UniqVpcId,omitnil" name:"UniqVpcId"`               // vpc网络id，例如vpc-fk33jsf43kgv。
	UniqSubnetId     string   `json:"UniqSubnetId,omitnil" name:"UniqSubnetId"`         // vpc网络下子网id，例如：subnet-fd3j6l35mm0。
	BillingMode      int64    `json:"BillingMode,omitnil" name:"BillingMode"`           // 计费模式。<ul><li>0：按量计费。</li><li>1：包年包月。</li></ul>
	InstanceTitle    string   `json:"InstanceTitle,omitnil" name:"InstanceTitle"`       // 实例运行状态描述：如”实例运行中“。
	OfflineTime      string   `json:"OfflineTime,omitnil" name:"OfflineTime"`           // 已隔离实例默认下线时间。按量计费实例隔离后默认两小时后下线，包年包月默认7天后下线。格式如：2020-02-15 10:20:00。
	SubStatus        int64    `json:"SubStatus,omitnil" name:"SubStatus"`               // 流程中的实例，返回子状态。
	Tags             []string `json:"Tags,omitnil" name:"Tags"`                         // 反亲和性标签。
	RedisShardSize   int64    `json:"RedisShardSize,omitnil" name:"RedisShardSize"`     // 分片大小。
	RedisShardNum    int64    `json:"RedisShardNum,omitnil" name:"RedisShardNum"`       // 分片数量。
	RedisReplicasNum int64    `json:"RedisReplicasNum,omitnil" name:"RedisReplicasNum"` // 副本数量。
	PriceId          int64    `json:"PriceId,omitnil" name:"PriceId"`                   // 计费 ID。
	CloseTime        string   `json:"CloseTime,omitnil" name:"CloseTime"`               // 实例隔离开始的时间。
	WanAddress       string   `json:"WanAddress,omitnil" name:"WanAddress"`             // 外网地址。 此字段可能返回 null，表示取不到有效值。
}

type RedisRequest struct {
	VpcId            string   `json:"vpc_id"`             // vpc私有网络id
	SubnetId         string   `json:"subnet_id"`          // subnet子网id
	ZoneName         string   `json:"zone_name"`          // 区域, ap-shanghai-1
	InstanceName     string   `json:"instance_name"`      // redis实例名称
	TypeId           uint64   `json:"type_id"`            // 实例类型id, 实例类型：2：Redis 2.8 内存版（标准架构）。 3：CKV 3.2 内存版（标准架构）。	4：CKV 3.2 内存版（集群架构）。	6：Redis 4.0 内存版（标准架构）。	7：Redis 4.0 内存版（集群架构）。	8：Redis 5.0 内存版（标准架构）。	9：Redis 5.0 内存版（集群架构）。	15：Redis 6.2 内存版（标准架构）。	16：Redis 6.2 内存版（集群架构）。
	MemSize          uint64   `json:"mem_size"`           // 内存大小
	GoodsNum         uint64   `json:"goods_num"`          // 实例数量
	Period           uint64   `json:"period"`             // 购买时长, 包年包月
	AutoRenew        int64    `json:"auto_renew"`         // 自动续费标识。	0：默认状态（手动续费）。 1：自动续费。 2：到期不续费。
	SecurityGroupIds []string `json:"security_group_ids"` // 安全组列表
	Password         string   `json:"password"`           // redis实例密码
	NoAuth           bool     `json:"no_auth"`            // 配置实例是否支持免密码访问。	true：免密访问实例。	false：非免密访问实例。默认为非免密方式，仅VPC网络的实例支持免密码访问。
	VPort            uint64   `json:"v_port"`             // 用户自定义的网络端口。默认为6379，范围为 [1024,65535]。
	BillingMode      int64    `json:"billing_mode"`       // 付费方式:0-按量计费，1-包年包月。
	RedisShardNum    int64    `json:"redis_shard_num"`    // 实例分片数量，Redis2.8标准架构、CKV标准架构和Redis2.8单机版、Redis4.0标准架构不需要填写。
	RedisReplicasNum int64    `json:"redis_replicas_num"` // 实例副本数量，Redis2.8标准架构、CKV标准架构和Redis2.8单机版不需要填写。
	ReplicasReadonly bool     `json:"replicas_readonly"`  //  是否支持副本只读，Redis2.8标准架构、CKV标准架构和Redis2.8单机版不需要填写。
	ProductVersion   string   `json:"product_version"`    // "local"本地盘版，"cloud"云盘版，"cdc"独享集群版，如果不传默认询价为本地盘版本
}
